<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<!-- 
    作者：王同学
    时间：2021/11/16
    
    我们学过的指令：
     v-bind:单向绑定解析表达式 可以简写为:XXX
     v-model:双向数据绑定
     v-for:遍历数组/对象/字符串
     v-on:绑定事件监听，可以简写为@ 
     v-if: 条件渲染（动态控制节点是否存在）
     v-else: 条件渲染（动态控制节点是否存在）
     v-show:条件渲染（动态控制节点是否展示）
 
     v-text指令：
     作用：向其所在的节点中渲染文本的内容
     与插值语法的区别：v-text会替换掉节点中的内容{{XX}}则不会
 

     v-html指令：
作用：向指定的节点渲染包含html结构的内容
与差值语法的区别：
(1)、v-html会替换掉节点中所有的内容 {{X}}则不会
(2)、v-html可以识别HTML结构

3、严重注意:v-html有安全性问题
在网站上动态渲染任意HTML是非常危险的 容易导致XSS攻击
一定要在可信用的内容上使用v-html，永远不要在用户提交的内容上
  
4、v-cloak指令(没有值)：
    1、本质上是一个特殊属性，Vue实例创建完毕并接管容器后，会删掉v-cloak属性
    2、 使用css配合v-cloak可解决网速慢时页面展示出{{XX}}的问题


5、v-once指令：
    v-once所在节点在初次动态渲染后，就视为静态内容了
     以后数据的改变不会引起v-once所在结构的更新，可以用于优化性能

6、v-pre指令：
1、跳过其所在的编译过程
2、可利用它跳过：没有使用指令语法、没有使用插值语法的节点、会加快编译

    -->

<body>
    <div id="root">
        <h1 v-pre>好好学习</h1>
        <h1>{{name}}</h1>
        <h1 v-text="name"></h1>
        <h2 v-html="str"></h2>
        <h2 v-once>初始化时n的值是:{{n}}</h2>
        <h2>当前的值是:{{n}}</h2>
        <button @click="n++">点我n+1</button>
    </div>
    <script>
        Vue.config.productionTip = false;
        new Vue({
            el: "#root",
            data: {
                n: 1,
                name: "王同学",
                str: '<h4>你好！</h4>'
            }
        });
    </script>
</body>

</html>